[C] Signed Hexadecimal string to long int function

Posted by Ben on Stack Overflow See other posts from Stack Overflow or by Ben
Published on 2010-05-06T14:34:45Z Indexed on 2010/05/06 14:48 UTC
Read the original article Hit count: 299

I am trying to convert a 24bit Hexadecimal string (6 characters) signed in two's complement to a long int in C.

This is the function I have come up with:

long int hex2li (char string[])
{
   char *pEnd;
   long int result = strtol (string, &pEnd, 16);

   if (strcmp (pEnd, "") == 0)
   {
      if (toupper (string[0]) == 'F')
      {
         return result - 16777216;
      }
      else
      {
         return result;
      }
   }

   return LONG_MIN;
}

Is it valid? Is there a better way of doing this?

© Stack Overflow or respective owner

Related posts about hexadecimal

Related posts about twos-complement